﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace BLL.Concrete
{
    public class EmpleadoBll : BllConnection
    {
        public IQueryable<DataAccess.Empleado> GetEmpleados()
        {
            return db.Empleados;
        }

        public DataAccess.Empleado GetEmpleado(int id)
        {
            return GetEmpleados().Single(u => u.Id == id);
        }

        public void EliminarEmpleado(int idEmpleado)
        {
            ImagenBll imagenBll = new ImagenBll();

            var empleado = GetEmpleados().Single(u => u.Id == idEmpleado);
            int? idImagen = empleado.IdFoto;
            db.Empleados.DeleteOnSubmit(empleado);
            db.SubmitChanges();
            if (idImagen != null)
                imagenBll.EliminarImagen(idImagen);

        }

        public int InsertEmpleado(string nombre, string cargo, string resumen, string descripcionCompleta, HttpPostedFileBase foto,int x,int y)
        {           

            DataAccess.Empleado equipo = new DataAccess.Empleado
            {
                Nombre = nombre,
                Cargo = cargo,
                Resumen = resumen,
                DescripcionCompleta = descripcionCompleta,
                X=x,
                Y=y
            };

            if (foto != null)
            {
                ImagenBll imageBll = new ImagenBll();
                int idImagen = imageBll.InsertImage(foto);
                equipo.IdFoto = idImagen;
            }

            db.Empleados.InsertOnSubmit(equipo);
            db.SubmitChanges();
            return equipo.Id;
        }

        public void UpdateEmpleado(int idEmpleado, string nombre, string cargo, string resumen, string descripcionCompleta, HttpPostedFileBase foto,int x,int y)
        {
            DataAccess.Empleado empleado = db.Empleados.Single(u => u.Id == idEmpleado);
            ImagenBll imagenBll = new ImagenBll();
            if (foto != null)
            {
                if (empleado.IdFoto != null)
                {
                    imagenBll.UpdateImagen(empleado.IdFoto.Value, foto);
                }
                else
                {
                    int idImagen = imagenBll.InsertImage(foto);
                    empleado.IdFoto = idImagen;
                }
            }
            empleado.Nombre = nombre;
            empleado.Cargo = cargo;
            empleado.Resumen = resumen;            
            empleado.DescripcionCompleta = descripcionCompleta;
            empleado.X = x;
            empleado.Y = y;
            db.SubmitChanges();
        }
    }
}
